我正在使用多处理来为我的Python应用程序创建一个子流程.我想在父进程和子进程之间共享数据.重要的是要提到我需要异步共享它,这意味着子进程和父进程将在代码运行期间更新数据.
什么是最好的方式来执行?
我正在使用多处理来为我的应用程序创建子流程.我还在进程和子进程之间共享一个字典.
我的代码示例:
主要流程:
from multiprocessing import Process, Manager
manager = Manager()
shared_dict = manager.dict()
p = Process(target=mysubprocess, args=(shared_dict,))
p.start()
p.join()
print shared_dict
Run Code Online (Sandbox Code Playgroud)
我的子流程:
def mysubprocess(shared_dict):
shared_dict['list_item'] = list()
shared_dict['list_item'].append('test')
print shared_dict
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,印刷值为:
{'list_item': []}
可能是什么问题呢?谢谢
我正在使用threading.Thread多线程代码。我想Timeout exception知道至少有1个线程没有在X秒内完成工作。我在这里找到了一些答案,描述了如何解决该问题,但是大多数答案都与UNIX兼容,而我使用的是Windows平台。
代码例如:
from threading import Thread
from time import sleep
def never_stop():
while 1 > 0:
print 'a'
sleep(5)
print 'b'
return
t1 = Thread(target=never_stop)
t1.start()
t2 = Thread(target=never_stop)
t2.start()
t3 = Thread(target=never_stop)
t3.start()
t1.join(2)
t2.join(2)
t3.join(2)
Run Code Online (Sandbox Code Playgroud)
我试图在该join方法中设置超时,但没有用。
有任何想法吗?
我最终将我的Python版本从2.7升级到3.6.1,并且还将我mitmproxy从旧的和好的v0.16升级到最新的版本.
我曾经使用libmproxy过这种语法来操纵通过代理转移的请求:
from netlib.http import decoded
from libmproxy import controller, proxy
from libmproxy.proxy.server import ProxyServer
class StickyMaster(controller.Master):
def __init__(self, server):
controller.Master.__init__(self, server)
self.stickyhosts = {}
def run(self):
try:
return controller.Master.run(self)
except KeyboardInterrupt:
self.shutdown()
def handle_request(self, flow):
flow.reply()
def handle_response(self, flow):
with decoded(flow.response):
<DO SOMETHING>
flow.reply()
config = proxy.ProxyConfig(port=8081)
server = ProxyServer(config)
m = StickyMaster(server)
m.run()
Run Code Online (Sandbox Code Playgroud)
我知道在新版本中语法完全不同,我找不到相关文档,并举例说明如何做到这一点.
任何人都可以与我分享一个基本代码的例子,比如我上面写的最新版本?