创建10个线程, 然后依次读取线程对象的值

from threading import current_thread as cthread

from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor

import time

#func函数没有传入参数

def func():

#print这行里面有i这个变量,但是func并没有传入任何参数,难道不应该在运行到这里的时候报错吗?为何能读取到i的值?

print('thread',i,cthread().ident)

time.sleep(0.5)

return cthread().ident

tp = ThreadPoolExecutor(3)

lst = []

#变量i在这里,为何func函数里面可以读取到?

for i in range(10):

res = tp.submit(func)

lst.append(res)

for i in lst:

print(i.result())

上面这段代码可以正常运行,按照我的理解,在定义func函数的时候并没有传入任何参数,为何func里面调用i变量的时候没报错呢?程序是如何读取到func函数外部的i变量值的?

我改了一下代码,给函数func传入了一个参数a,如下:

from threading import current_thread as cthread

from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor

import time

#func函数这次可以传入参数a

def func(a):

#因为传入了参数a,所以这里print可以取到a的值并打印,没问题

print('thread',a,cthread().ident)

time.sleep(0.5)

return cthread().ident

tp = ThreadPoolExecutor(3)

lst = []

for a in range(10):

#这里同步把每次循环的a的值submit到函数func的参数列表里

res = tp.submit(func,a)

lst.append(res)

for i in lst:

print(i.result())

也能正常运行。所以就很不解了,修改后的代码我是能看明白里面的逻辑的,但是之前那个func没有传入参数的一直想不明白函数内部是如何同步读取到函数func外部的值i的。

求助各位大神,万分感谢!

:D

python线程池传入多个参数_python线程池问题相关推荐

  1. python线程池传入多个参数_python 线程池ThreadPoolExecutor

    背景 最近项目中需要抽取数据库中某些数据组成一个缓存表,SQL倒是不复杂就是单纯的慢,慢到navicat跑崩了也没跑出来,然后就想着用python写脚本,根据时间字段做异步查询 代码 数据库连接写成伪 ...

  2. 一文详解java线程池 详解Java线程池的七个参数 详解池化技术 java如何选择核心线程数 详解Java线程池的拒绝策略

    目录 引言 线程池使用场景 加快请求响应(响应时间优先) 加快处理大任务(吞吐量优先) 特殊说明 线程池的池化技术 线程池的创建 手动创建 创建newFixedThreadPool线程池 创建newS ...

  3. python线程退出或应用程序请求_Python 线程和进程

    前言 学编程,谁没有为线程折腾过啊. 目录 线程与进程 线程与进程是操作系统里面的术语,简单来讲,每一个应用程序都有一个自己的进程. 操作系统会为这些进程分配一些执行资源,例如内存空间等. 在进程中, ...

  4. python如何在所有线程结束后执行最后操作_Python线程的生命周期

    在线程的生命周期中,从创建到执行以及最终终止,线程通常处于四种状态之一:开始态.可调度状态.阻塞态和终止态. 父线程和子线程 当一个新的进程或程序开始运行时,它将以一个线程开始,这个线程被称为主线程. ...

  5. python调用c函数传字符串参数_Python使用ctypes模块调用DLL函数之传递数值、指针与字符串参数...

    在Python语言中,可以使用ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数,在提高软件运行效率的同时,也可以充分利用目前市面上各种第三方的DLL库函数,以扩充Python软件 ...

  6. python函数定义和其四种参数_python入门第九课:函数的定义及多种参数传递方式...

    本教程使用的课本是<Python编程:从入门到实践>,作者:[美] Eric Matthes 本节介绍Python中的函数,函数是可以反复使用的一段代码,有了函数能大大简化编程工作量,还能 ...

  7. python 线程通信的几种方式_Python 线程、线程通信、多线程

    这是一篇学习Python 线程相关的内容,记录一下以备复习和开发使用,技术有限,如有问题欢迎指出,多谢. 一.GIL 全局解释器锁(cpython) 1.为什么会有这个锁:为了线程安全,减少pytho ...

  8. python中def函数中的参数_python中的函数def和函数的参数

    ''' 函数: 1.减少代码重用性 2.易维护 3.可扩展性强 4.类型function 定义函数: def 函数变量名(): 函数的调用: 1.函数名加括号 2.函数如果没被调用,不会去执行函数内部 ...

  9. python 传参之后 显示缺失参数_Python中的参数传递问题

    首先需要说明python中元组,列表,字典的区别. 列表: 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单. 例如:lst = ['arwen',123] 向list中添加项有两种方法:ap ...

最新文章

  1. 36 张图梳理 Intellij IDEA 常用设置
  2. DeepLearning——CNN
  3. 非变动性算法源代码分析与使用示例( for_each、min_element 、find_if、search 等)...
  4. linux vim tag,Vim基础知识之ctags 及 Taglist 插件
  5. Qt文档阅读笔记-QHostInfo官方解析与实例(根据Host获取IP)
  6. 数据库中的DbUtils
  7. openssl、libosip2、libeXosip2三个库的编译过程
  8. ctfshow-萌新-web5( 利用位运算符控制SQL获取网站敏感信息)
  9. sql developer下载_开放下载!《Rocket MQ 使用排查指南》精解100+常见问题
  10. 钢笔工具(贝塞尔曲线)
  11. LE-MSFE-DDNet:基于微光增强和多尺度特征提取的缺陷检测网络--论文笔记
  12. 计算机开机按f1,开机要按F1怎么解决?电脑开机不按F1进去系统的方法
  13. [论文阅读] LCC-NLM(局部颜色校正, 非线性mask)
  14. Kubernetes IPVS和IPTABLES
  15. 意外之喜 - PDF Reader Pro打5折!
  16. 将一个C类网络(192.168.1.0/24)划分为4个子网,每个子网至少可容纳30台主机,如何划分?
  17. 关于MAC安装包文件损坏解决办法
  18. 修改activityMQ的登录账与密码
  19. Verilog HDL 程序设计(三)
  20. 软件测试 —— Python(四)之函数

热门文章

  1. WPF datagrid 加入图片
  2. MFC 视频播放器实现局部放大功能
  3. r 语言ylim = c(0 1),今日R--条形图(barplot)
  4. bat批量修改及替换文件内容
  5. Win11高效日历推荐
  6. 创建loop15设备挂载镜像文件(.img)
  7. Mac可读可写remount硬盘
  8. Android software RD engineer能力模型
  9. Android音频框架笔记 - 上篇
  10. Android things:你应该了解的Android Things知识