定义的c语言类型,如c_double
  • 继承标准库ctypes其中的Structure对象创建的自定义结构体, c_double
  • elapsed time: 0.50s elapsed time: 1.02s OK 1
    elapsed time: 0.50s elapsed time: 1.02s OK 2

    为了更加方便的在主进程获取到子进程中的数据,我们可以,下例就是一个例子.

    elapsed time: 0.50s elapsed time: 1.02s OK 3
    elapsed time: 0.50s elapsed time: 1.02s OK 4

    1.7.1. 高级共享multiprocessing.Manager

    之前介绍了queue,pipe,array和value,这些都太具体底层,有没有什么方法可以像处理python容器一样简单地处理数据共享的问题呢?multiprocess提供一个manager模块.

    Manager()返回的manager对象控制了一个server进程,此进程包含的python对象可以被其他的进程通过proxies来访问.从而达到多进程间数据通信且安全。

    Manager支持的类型有

    elapsed time: 0.50s elapsed time: 1.02s OK 5
    elapsed time: 0.50s elapsed time: 1.02s OK 6

    namespace对象没有公共的方法,但是有可写的属性

    elapsed time: 0.50s elapsed time: 1.02s OK 7
    elapsed time: 0.50s elapsed time: 1.02s OK 8

    1.8. 使用Unix信号管理子进程

    类似在多线程中控制子线程,我们使用os.kill(pid,sig)来控制子进程.

    elapsed time: 0.50s elapsed time: 1.02s OK 9
    def crypto_process(size, key):     in_text = bytearray(randrange(256) for i in range(size))     cypher_text = arcfour(key, in_text)     out_text = arcfour(key, cypher_text)     assert in_text == out_text, 'Failed arcfour_test'     return size  def main(workers=None):     JOBS = 12     SIZE = 2**18      KEY = b"'Twas brillig, and the slithy toves\nDid gyre"     STATUS = '{} workers, elapsed time: {:.2f}s'     if workers:         workers = int(workers)     t0 = time()      with ProcessPoolExecutor(workers) as executor:         actual_workers = executor._max_workers         to_do = []         for i in range(JOBS, 0, -1):             size = SIZE + int(SIZE / JOBS * (i - JOBS/2))             job = executor.submit(crypto_process, size, KEY)             to_do.append(job)          for future in as_completed(to_do):             res = future.result()             print('{:.1f} KB'.format(res/2**10))      print(STATUS.format(actual_workers, time() - t0)) 0
    ]宙飒天下网-ZhouSa.com

    相关阅读

    发表评论

    表情:
    验证码
    评论列表 (暂无评论,454人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码