小编Dan*_*Dan的帖子

如何在Python进程之间共享数据?

我正在使用多处理来为我的Python应用程序创建一个子流程.我想在父进程和子进程之间共享数据.重要的是要提到我需要异步共享它,这意味着子进程和父进程将在代码运行期间更新数据.

什么是最好的方式来执行?

python multiprocessing python-2.7 python-multiprocessing

7
推荐指数
1
解决办法
1万
查看次数

无法将项目附加到多处理共享列表

我正在使用多处理来为我的应用程序创建子流程.我还在进程和子进程之间共享一个字典.

我的代码示例:

主要流程:

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': []}

可能是什么问题呢?谢谢

python shared-memory multiprocessing python-2.7

6
推荐指数
1
解决办法
4437
查看次数

如何设置线程超时?

我正在使用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 windows multithreading timeout python-2.7

5
推荐指数
2
解决办法
2万
查看次数

在新的mitmproxy中,libmproxy相当于什么?

我最终将我的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)

我知道在新版本中语法完全不同,我找不到相关文档,并举例说明如何做到这一点.

任何人都可以与我分享一个基本代码的例子,比如我上面写的最新版本?

python python-3.x mitmproxy

5
推荐指数
1
解决办法
1300
查看次数