吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1039|回复: 2
收起左侧

[求助] 使用spyder(Anaconda)写一段代码,但Ipython console没有打印print的内容,如何解决

[复制链接]
Sandwiches 发表于 2021-10-5 23:23
本帖最后由 Sandwiches 于 2021-10-5 23:24 编辑

[Asm] 纯文本查看 复制代码
# -*- coding: utf-8 -*-

"""

Created on Tue Oct  5 23:15:22 2021



@author: Administrator

"""

from multiprocessing import Process, Queue

import os

import time

import random



def write(q):

    print(f'Process to write: {os.getpid()}')

    for value in ['A', 'B', 'C']:

        print(f'Put {value} to queue...')

        q.put(value)

        time.sleep(random.random())





def read(q):

    print(f'Process to read: {os.getpid()}')

    while True:

        value = q.get(True)

        print(f'Get {value} from queue.')





def main():

    # test queue

    q = Queue()

    pw = Process(target=write, args=(q,))

    pr = Process(target=read, args=(q,))

    # 启动子进程pw,写入:

    pw.start()

    # 启动子进程pr,读取:

    pr.start()

    # 等待pw结束:

    pw.join()

    # pr进程里是死循环,无法等待其结束,只能强行终止:

    pr.terminate()





if __name__ == '__main__':

    main()


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

WEASYD 发表于 2021-10-7 00:14
这个我记得好像是ipython和jupyter只会监听主进程的输出消息,他不会输出子进程中的内容,你可以讲代码放在pycharm中执行
Jack2002 发表于 2021-10-7 00:53
本帖最后由 Jack2002 于 2021-10-7 00:56 编辑

代码是没问题的,pr.terminate() 强制终止,不推荐这么做,加个判断就能控制其自然退出。
[Python] 纯文本查看 复制代码
# -*- coding: utf-8 -*-

from multiprocessing import Process, Queue
import os
import time


def write(q):
        print(f'Process to write: {os.getpid()}')
        for value in ['A', 'B', 'C']:
                print(f'Put {value} to queue...')
                q.put(value)
                time.sleep(0.3)


def read(q):
        print(f'Process to read: {os.getpid()}')
        while True:
                value = q.get(True)
                if 'quit' == value:
                        break
                print(f'Get {value} from queue.')


def main():
        # test queue
        q = Queue()
        pw = Process(target=write, args=(q,))
        pr = Process(target=read, args=(q,))

        # 启动子进程pw,写入:
        pw.start()

        # 启动子进程pr,读取:
        pr.start()

        # 等待pw结束:
        pw.join()
        # 退出
        q.put('quit')

        # pr进程里是死循环,无法等待其结束,只能强行终止:
        # pr.terminate()
        pr.join()
        


if __name__ == '__main__':
        main()

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 21:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表