有三个问题可能重复(但过于具体):
通过回答这个问题,可以回答所有其他三个问题.希望我能说清楚:
一旦我在多处理创建的某个进程中创建了一个对象:
例1(已解决)
from concurrent.futures import *
def f(v):
return lambda: v * v
if __name__ == '__main__':
with ThreadPoolExecutor(1) as e: # works with ThreadPoolExecutor
l = list(e.map(f, [1,2,3,4]))
print([g() for g in l]) # [1, 4, 9, 16]
Run Code Online (Sandbox Code Playgroud)
例2
假设f返回一个具有可变状态的对象.应该可以从其他进程访问此相同的对象.
例3
我有一个具有打开文件和锁的对象 - 如何授予对其他进程的访问权限?
提醒
我不希望出现此特定错误.或者是这个特定用例的解决方案.解决方案应足够通用,以便在进程之间共享不可移动的对象.可以在任何进程中创建对象.使所有对象可移动并保持身份的解决方案也可以是好的.
任何提示都是受欢迎的,任何指向如何实现解决方案的部分解决方案或代码片段都是值得的.所以我们可以一起创建解决方案.
以下是尝试解决此问题,但没有多处理:https://github.com/niccokunzmann/pynet/blob/master/documentation/done/tools.rst
问题
你希望其他进程对引用做什么?
引用可以传递给使用多处理创建的任何其他进程(重复3).可以访问属性,调用引用.访问的属性可能是也可能不是代理.
使用代理有什么问题?
也许没有问题,但挑战.我的印象是代理有一个管理器,管理器有自己的进程,因此必须序列化和转移不可序列化的对象(部分用StacklessPython/fork解决).还存在特殊对象的代理 - 为所有对象(可解决的)构建代理很难但不是不可能的.
解? - 代理+经理?
Eric Urban表明序列化不是问题.真正的挑战在于Example2&3:状态的同步.我对解决方案的想法是为经理创建一个特殊的代理类.这个代理类
docker-compose 无法构建 web 组件,因为它无法连接到之前创建的 db 组件
Mac OSX 10.13.6、conda 4.5.11、Python 3.6.8、Docker 版本 18.09.1、docker-compose 版本 1.23.2
django 1.8.3 与 Dockerfile 中的 requirements.txt 一起安装。不能随意升级。
关于 SO 的几个非常相似的讨论没有帮助(比如这个:Docker-compose with django could not translate host name "db" to address: Name or service not known)。
我有一个docker-compose.yml网络和两个组件:
version: '3'
networks:
bridge:
driver: bridge
services:
db:
image: postgres:10
container_name: myapp-db
volumes:
- ./postgres_data:/var/lib/postgresql/data/
ports:
- "5432:5432"
environment:
POSTGRES_DB: actionability-master
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
networks:
- bridge
web:
restart: unless-stopped
container_name: myapp-web
build: . …Run Code Online (Sandbox Code Playgroud) 上下文
作为一个大学项目,我们想要改变pharo vm以使用对象表,看看会发生什么.
我们使用来自github和VMMaker 的pharo-vm克隆.构建VM工作正常.
为了开始,我们添加了一个返回增量Integer的原语:
InterpreterPrimitives>>primitiveIntegerIncrement
"increments an integer"
self pushInteger: self popInteger + 1 .
Run Code Online (Sandbox Code Playgroud)
并StackInterpreter class>>initializePrimitiveTable据此修改
MaxPrimitiveIndex := 576.
"... and so on ..."
(575 primitiveFail)
(576 primitiveIntegerIncrement))
Run Code Online (Sandbox Code Playgroud)
它有效.
问题
当我们对VM进行更改时,我们想要在SmalltalkImage中进行测试运行,因此我们不需要编译并看到它不起作用.
就像是:
StackInterpreter test: '1 inc'
Run Code Online (Sandbox Code Playgroud)
如果原语错误或发生错误,我可以调试.当然需要做得更多,但我怎样才能做到这一点?
我们尝试了什么
类VMMaker-InterpreterSimulation类StackInterpreterSimulator.尝试评论中的代码
DoIt
^ (StackInterpreterSimulator new openOn: Smalltalk imageName) test
Run Code Online (Sandbox Code Playgroud)
错误:
displayForm := 'Display has not yet been installed' asDisplayText form.
Run Code Online (Sandbox Code Playgroud)
ByteString不明白 asDisplayText
(CogVMSimulator new openOn: Smalltalk imageName) test
(InterpreterSimulator …Run Code Online (Sandbox Code Playgroud)我第一次玩travis-ci并遇到一个令我困惑的错误.
下面是我的.travis.yml,它在linted时验证.
language: node_js
node_js:
- 0.8
after_script:
- echo "Hello World"
Run Code Online (Sandbox Code Playgroud)
以下是我的travis构建输出:
$ git clone --depth=50 --branch=master git://github.com/iancrowther/travis-experiment.git iancrowther/travis-experiment
Cloning into 'iancrowther/travis-experiment'...
remote: Counting objects: 27, done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 27 (delta 2), reused 20 (delta 0)
Receiving objects: 100% (27/27), done.
Resolving deltas: 100% (2/2), done.
$ cd iancrowther/travis-experiment
git.2
$ git checkout -qf xxx
$ nvm use 0.8
Now using node v0.8.22
$ node --version
v0.8.22
$ npm --version
1.2.14
$ make …Run Code Online (Sandbox Code Playgroud) 因此,我创建了一个应用程序,其中该应用程序连接到服务器并告诉它执行某些操作。但是,服务器需要大量时间来完成该操作(例如一个小时左右)。因此,将客户端长时间连接到服务器没有任何意义。我希望服务器必须创建与客户端的连接,以告知他已准备好交付最终结果。然后,在连接之后,他将数据发送到客户端。
我在这里想两个想法:
我也可以在客户端上创建服务器,并且客户端可以侦听服务器连接。但是,我的客户通常是一些资源有限的桌面应用或移动应用,其中一些还位于防火墙/ NAT之后。因此,即使他们正在运行服务器,我也不确定我的主服务器是否能够连接到它们。
客户可以定期检查结果是否准备就绪。这样,客户端不必维护任何服务器或任何东西。它将是普通的旧客户端服务器体系结构。但这会浪费大量不必要的流量,因为结果可能会在几分钟到几小时内出现。客户端不断固定服务器对我来说似乎并不好。
我首先不知道从哪里开始或用谷歌搜索这些东西。我知道存在这种情况是因为我经常看到诸如“ Skype”之类的服务器通知我的桌面应用程序我有新朋友请求,或者是Gmail通知系统,其中Google会在收到新邮件时在我的桌面上显示一条消息。
大多数Google搜索在客户端连接到服务器时会产生相同的内容。但是这里的情况恰恰相反。
如果这个问题不符合标准,那么一些参考文献也不错,我将删除此帖子。我很可能没有在思考并且变得愚蠢。请帮忙。谢谢。
上下文
我有一个带有方法的C#类PyroProxycall(string method, params object[] arguments)
public class PyroProxy : IDisposable {
public object call(string method, params object[] arguments)
}
Run Code Online (Sandbox Code Playgroud)
这是远程对象的proxist类.
动机
始终使用call方法在代码中看起来不太好.
题
假设PyroProxy类没有方法test_method().如何使以下代码有效?
PyroProxy p = new PyroProxy();
p.test_method();
Run Code Online (Sandbox Code Playgroud)
test_method看起来像的代码
public object test_method(params object[] arguments) {
return call("test_method", arguments); // you get the point
}
Run Code Online (Sandbox Code Playgroud)
这可能是我没有找到的重复,也许在编译时或运行时可能.我能做些什么才能更接近这个目标?提示非常感谢.有关如何注入方法的答案.我找到了ExpandoObject,但它并没有告诉我如何创建未知方法.
举个例子:
>>> import gc
>>> d = { 1 : object() }
>>> gc.get_referrers(d[1])
[] # Python 2.7
[{1: <object object at 0x003A0468>}] # Python 2.5
Run Code Online (Sandbox Code Playgroud)
为什么是d不列为refererrer到对象?
EDIT1:虽然d中的dict引用了对象,为什么没有列出dictionairy?
我看到很多例子解释了如何以不同的大小保存绘图,但没有一个使用 host_subplots。我想将图形保存为当我最大化首先出现绘图的窗口时的样子。以下块是我一直在做的较短版本:
>>> import matplotlib.pyplot as plt
>>> import mpl_toolkits.axisartist as AA
>>> from mpl_toolkits.axes_grid1 import host_subplot
>>>
>>> host = host_subplot(111, axes_class = AA.Axes)
>>> plt.subplots_adjust(right=0.75)
>>>
>>> time = [1, 2, 3, 4, 5]
>>> velocity = [2, 4, 6, 8, 10]
>>> another_variable = [15, 20, 25, 40, 55]
>>>
>>> S1, = host.plot(time,velocity, color = 'r')
>>>
>>> par1 = host.twinx()
>>> S2, = par1.plot(time, another_variable, color = 'g')
>>>
>>> plt.savefig('my_plot.png')
Run Code Online (Sandbox Code Playgroud)
然后我得到了以正常大小保存的图形!提前致谢!
我有一份清单,
L = [['First', 'Last', 'GPA', 'Major', 'Drops'],
['Jane', 'Doe', '3.5', 'CS', '2'], ['Joe', 'Doe', '2.0', 'CpE', '0'],
['Todd', 'Brown', '3.88', 'CS', '5'],
['Mike', 'Smith', '3.88', 'CS', '5']]
Run Code Online (Sandbox Code Playgroud)
我要将它打印在如下表格中:
--------------------------------------------------------
| First| Last| GPA| Major| Drops|
--------------------------------------------------------
| Jane| Doe| 3.50| CS| 2|
| Joe| Doe| 2.00| CpE| 0|
| Todd| Brown| 3.88| CS| 5|
| Mike| Smith| 3.88| CS| 5|
Run Code Online (Sandbox Code Playgroud)
我的代码到目前为止:
L = [['First', 'Last', 'GPA', 'Major', 'Drops'],
['Jane', 'Doe', '3.5', 'CS', '2'],
['Joe', 'Doe', '2.0', 'CpE', '0'],
['Todd', …Run Code Online (Sandbox Code Playgroud) python ×5
python-3.x ×3
proxy ×2
python-2.7 ×2
c# ×1
containers ×1
django ×1
docker ×1
dynamic ×1
formatting ×1
list ×1
matplotlib ×1
methods ×1
pharo ×1
postgresql ×1
python-2.x ×1
reference ×1
smalltalk ×1
squeak ×1
travis-ci ×1