如何在2个线程之间共享变量

2024-01-01

Using Python 2.7.3 on Windows.

我如何共享变量num线程之间,这样,之后num是平方的,是打印出来的?

我意识到我需要了解线程是如何工作的,但是文档没有太多,而且我在这里也没有找到任何东西..
那么,有人可以解释线程如何工作以及如何在两个线程之间共享变量吗?

我的代码(不断打印2)

import threading
def func1(num):
    while num < 100000000:
        num =  num**2
def func2(num):
    while num < 100000000:
        print num,
num = 2
thread1 = threading.Thread(target=func1,args=(num,))
thread2 = threading.Thread(target=func2,args=(num,))
print 'setup'
thread1.start()
thread2.start()

这个问题的一般答案是队列:

import threading, queue

def func1(num, q):
    while num < 100000000:
        num =  num**2
        q.put(num)

def func2(num, q):
    while num < 100000000:
        num = q.get()
        print num,

num = 2
q = queue.Queue()
thread1 = threading.Thread(target=func1,args=(num,q))
thread2 = threading.Thread(target=func2,args=(num,q))
print 'setup'
thread1.start()
thread2.start()

printing

=== pu@pumbair:~/StackOverflow:507 > ./tst.py
setup
4 16 256 65536 4294967296

请注意,在此(和您的)代码中,num 是 func1 和 func2 中的局部变量,除了它们接收全局变量 num 的初始值之外,它们彼此没有任何关系。所以数字是not在这里分享。相反,一个线程将其 num 的值放入队列中,另一个线程将该值绑定到同名的本地(因此不同)变量。但当然它可以使用任何名称。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在2个线程之间共享变量 的相关文章

  • dbt 的 dbt_project.yml 文件中的嵌套变量

    下面是我在 dbt project yml 文件中的代码 vars Variable project1 vendor ABC DEF ABC model name model123 case types name CASE1 name CA
  • 如何修复错误“错误:命令错误,退出状态 1:python。”尝试使用 pip 安装 django-heroku 时[重复]

    这个问题在这里已经有答案了 我正在尝试使用 pip 安装 django heroku 但它一直遇到错误 我看到一些建议告诉我要确保 Heroku 中的 Python 版本是最新的 我已经这么做了 推送到 Heroku master 后 我运
  • Python(openpyxl):将数据从一个excel文件转移到另一个(模板文件)并用另一个名称保存,同时保留模板

    我有一个templateexcel 文件名为template xlsx其中有许多张 我想从单独的地方复制数据 csv文件到第一页template xlsx 命名为data 并将新文件另存为result xlsx同时保留原来的模板文件 我想粘
  • 检查字符串是否以 XXXX 开头

    我想知道如何在Python中检查字符串是否以 hello 开头 在 Bash 中我通常这样做 if string hello then do something here fi 我如何在Python中实现同样的效果 aString hell
  • django/whitenoise 存储后端导致错误

    我在调试关闭时在 heroku 上运行 django 应用程序时遇到了 500 错误 使用 rollbar 了解发生错误的原因后 它报告了以下内容 ValueError The file media img 1 jpg could not
  • Plotly - 不同颜色的表面

    我正在尝试在 Plotly for Python 中绘制多个曲面 每个曲面具有不同的颜色 具体来说 表面显示了在相空间中不同点采取行动的预测奖励函数 由于我在每个点都有多个可能的操作 因此每个点都是不同的表面 我想对每个表面进行独特的着色
  • 在python中浏览ftp目录

    我正在尝试使用 ftplib 使用 Python 3 从 ftp 服务器下载多个文件夹 我有一个文件夹名称列表 它们都位于文件夹 root 中 问题是我不知道如何浏览它们 当我使用cwd我可以进入更深的目录 但是如何再次起来呢 我正在尝试得
  • 在OpenCV Python中编写4通道以上图像

    这对我来说是一个持续的挑战 我正在尝试使用 openCV 将两个 3 RGB 图像组合成一个 6 通道 TIFF 图像 到目前为止我的代码如下 import cv2 import numpy as np im1 cv2 imread im1
  • 具有线程安全性的 eventbus 最佳实践

    我的应用程序具有用户交互活动和后台服务 这是修改数据模型的唯一地方 后台服务监听用户所做的操作以及来自网络的传入消息 因此 可能会出现并发问题 我尝试使用处理程序来防止这些问题 对于事件层 我使用 greenrobots Eventbus
  • ctypes.ArgumentError:不知道如何转换参数

    我在C库中定义了一个函数 如下所示 int Test char str1 int id1 char str2 float val float ls 我想在Python中使用它 所以我编写了以下Python代码 str1 a str2 b i
  • 如何在 python 中连接到 GObject 信号,而不保留对连接器的引用?

    问题基本上是这样的 在 python 的 gobject 和 gtk 绑定中 假设我们有一个在构造时绑定到信号的类 class ClipboardMonitor object def init self clip gtk clipboard
  • seaborn 未在定义的子图中绘制

    我正在尝试用这段代码并排绘制两个图表 fig ax1 ax2 plt subplots 1 2 sns displot x X train Age hue y train ax ax1 sns displot x X train Fare
  • Django外键:获取相关模型?

    是否可以通过外键字段本身获取外键的相关模型 例如 如果我有 3 个模型 class ModelA models Model field1 models CharField max length 10 class ModelB models
  • 在 matplotlib 中分割图例

    是否有可能将一个大图例分成多个 通常是 2 个 较小的图例 from pylab import t arange 0 0 2 0 0 01 s sin 2 pi t plot t s linewidth 1 0 label Graph1 g
  • 在 PyQt 中使用 Windows 7 任务栏功能

    我正在寻找有关将一些新的 Windows 7 任务栏功能集成到我的 PyQt 应用程序中的信息 具体来说 如果已经存在使用新进度指示器的可能性 see here http www petri co il wp content uploads
  • 仅打印字符串中的元音

    我是Python新手 我正在尝试打印字符串中的所有元音 因此 如果有人输入 嘿 一切都好吗 所有元音都需要打印 但我不知道怎么做 所以这不是计算元音 而是打印元音 现在我已经得到了这个 sentence input Enter your s
  • 将glade接口放入python中

    我在 Glade 中制作了一个 gui 我想将其放入 python 程序中 我正在调整我在网上找到的教程中的说明 以将其加载到我的林间空地文件中 http www pygtk org articles pygtk glade gui Cre
  • 通过 Tweepy 在 Twitter 上更新状态时的回溯

    我一直在尝试使用 Twitter 在 Twitter 上发布我的 Rpi 读数tweepy 但首先我想检查一下是否tweepy本来可以正常工作 但事实并非如此 我正确安装了软件包 但是当我尝试运行简单的代码来发布某些内容时 出现错误 是的
  • 带有 graphviz_layout 的水平树

    在Python中 使用networkx 我可以用以下方法绘制垂直树 g nx balanced tree 2 4 pos nx graphviz layout g prog dot nx draw g pos labels b all no
  • 每次 apache 重新启动时,flask-login 会话都会被破坏

    我正在使用烧瓶登录https github com maxcountryman flask login https github com maxcountryman flask login和领域记住登录用户 http packages py

随机推荐

  • 如何导入从html导入.json的.js

    我不是说英语的公民 我英语不好 但我做得最好 我正在尝试导入一个从 html 导入 json 的 js 文件 js import JSON from json menu json function function parseMenu ul
  • 我如何在同时具有“script”和“doc”的 ES 上发出单个更新请求..?

    我的 文档 请求 POST test v2 update Z nM 2wBjkGOA r6ArOb doc CD middle prakash first raj doc as upsert true 我的 脚本 请求 POST test
  • 将编码字符添加到 url 会破坏 htaccess

    这是我的代码 RewriteEngine on RewriteRule page index php url 1 NC 当我访问时page http google com http google com 我相信你需要B escape htt
  • mv 包裹在 shell 脚本中的 if 内

    你怎么做到这一点 我的想法是这样的 另外 我需要使用 fi 并完成吗 或仅其中之一 if mv 1 txt gt 2 txt 0 then echo Success else echo Failure fi done 在 BASH 中只有这
  • 多重返回:哪一个设置最终的返回值?

    鉴于此代码 String test try return 1 finally return 2 语言规范是否定义了调用的返回值test 换句话说 在每个 JVM 中它总是相同的吗 在 Sun JVM 中 返回值是2 但我想确定 这不依赖于虚
  • Dask 连接的简单方法(水平,轴=1,列)

    Action将两个 csv data csv 和 label csv 读取到单个数据帧 df dd read csv data files delimiter header None names x y z intensity r g b
  • 基于另一张工作表中的公式的条件格式

    我有 2 张 Excel 2007 PT PT 表 其中一个 sheet1 有多个要验证的列 另一个 base valid 有 5 列需要验证 我正在尝试使用宏验证 regioes M2 列 Sub Validar Regioes Dim
  • 数据分割时使用 scikit-learn 标准化 PCA

    我有一个后续问题 如何使用 PCA 和 scikit learn 进行标准化 https stackoverflow com questions 25475465 how to normalize with pca and scikit l
  • jest 无法识别 URL 构造函数抛出的 TypeError

    Jest toThrow TypeError 与抛出的 TypeError 不匹配new URL构造函数 这是一个错误还是我做错了什么 笑话版本是29 4 2 测试用例 it throws TypeError when url is inv
  • JavaFX ContextMenu 如何获取单击的对象?

    我正在学习 javafx scene control ContextMenu 现在我面临一个问题 如何从 EventHandler 获取单击的对象 event source 和 event target 都返回 MenuItem 让我用一个
  • 使用 Valgrind 运行时 mmap 返回 EINVAL

    我针对 Valgrind 运行的 mips32 应用程序在 mmap 函数中失败 如果我单独运行它工作正常 但是当我针对 valgrind 运行它时 它每次都会失败并显示 EINVAL void mem uint32 t mmap NULL
  • Write系统调用直接将数据写入磁盘?

    我读过几个问题 here https stackoverflow com questions 1450551 buffered i o vs unbuffered io 与此相关 但我仍然有些困惑 我的理解是 write 系统调用将数据放入
  • lucene如何索引文档?

    我读了一些关于Lucene的文档 我还阅读了此链接中的文档 http lucene sourceforge net talks pisa http lucene sourceforge net talks pisa 我不太明白Lucene是
  • 针对写入量大的 Oracle 应用程序进行优化?

    对于主要写入 更新 Oracle 数据库的应用程序 可以使用哪些有用的 Oracle 优化 这里的一般使用模式不是像大多数情况那样进行网络服务或日志记录 而是保存系统的复杂状态 因此唯一需要读取的时间是系统启动时 之后更新并创建所有方式 因
  • 在 Android 上使用选定的 UID 模拟 NFC 卡

    我想问 2 个关于 NFC 卡模拟的问题 我可以模拟包含我选择的 uid 的 NFC 卡吗 I read HCE https developer android com guide topics connectivity nfc hce h
  • cuda内核调用是同步还是异步

    我读到可以使用内核启动来同步不同的块 即 如果我希望所有块在继续操作 2 之前完成操作 1 我应该将操作 1 放在一个内核中 将操作 2 放在另一个内核中 这样 我就可以实现块之间的全局同步 然而 cuda c 编程指南提到内核调用是异步的
  • 对url中的中文字符进行转义?

    有时 汉字会转义为以下形式 B9 F3 D6 DD C3 A9 CC A8 如何将这些字符转换回 Python 中可读的汉字 您可以使用urllib2 unquote像这样 gt gt gt import urllib2 gt gt gt
  • Spark 中的简单矩阵乘法

    我正在努力处理一些非常基本的 Spark 代码 我想定义一个矩阵x有 2 列 这是我尝试过的 scala gt val s breeze linalg linspace 3 3 5 s breeze linalg DenseVector D
  • 为什么按位“非1”等于-2?

    假设我们有1这个以 2 为基数的数字是 00000000000000000000000000000001 现在我想翻转所有位以获得以下结果 11111111111111111111111111111110 据我所知 解决方案是使用 按位非运
  • 如何在2个线程之间共享变量

    Using Python 2 7 3 on Windows 我如何共享变量num线程之间 这样 之后num是平方的 是打印出来的 我意识到我需要了解线程是如何工作的 但是文档没有太多 而且我在这里也没有找到任何东西 那么 有人可以解释线程如