Python中的 I/O多路复用。

转自:微点阅读  https://www.weidianyuedu.com/content/1517370417612.html

一、I/O多路复用概念:

监听多个描述符的状态,如果描述符状态改变,则会被内核修改标志位,从而被进程获取进而进行读写操作

二、select,poll,epoll

select模块,提供了:select、poll、epoll三个方法,分别调用系统的 select,poll,epoll 从而实现IO多路复用。

Windows Python:提供: select

Mac Python:提供: select

Linux Python:提供: select、poll、epoll

select

在python中,select函数是一个对底层操作系统的直接访问的接口,它用来监控sockets、files和pipes,等待IO完成。当有可读、可写或是异常事件产生时,select可以很容易的监控到。

select目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点,这也是它所剩不多的优点之一。

select的一个缺点在于单个进程能够监视的文件描述符的数量存在最大限制,在Linux上一般为1024,不过可以通过修改宏提升这一限制。

格式:rList,wList,eList = select.select(argv1,argv2,argv3,timeout)

参数:

argv1:监听序列中的句柄发生变化时,则获取发生变化的句柄添加到rList序列中

argv2:监听序列中含有句柄时,则将该序列中所有的句柄添加到wList序列中

argv3:监听序列中的句柄发生错误时,则将该发生错误的句柄添加到eList序列中

timeout:设置阻塞时间,如果不设置则默认一直阻塞

select 实例:

用select实现处理多个socket客户端请求

服务端

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import socket

import select

ip_port = ("127.0.0.1",9999)

sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建socket对象

sk.bind(ip_port) #绑定ip、端口

sk.listen(5) #监听

sk.setblocking(False) #不阻塞

inputs = [sk,]

outputs = []

while True:

rlist,wlist,eList = select.select(inputs,outputs,[],0.5)

print("inputs:",inputs) #查看inputs列表变化

print("rlist:",rlist) #查看rlist列表变化

for r in rlist:

if r == sk: #如果r是服务端

conn,address = r.accept()#

inputs.append(conn)

print (address)

else:

client_data = r.recv(1024)

if client_data: #如果有数据,返回数据

r.sendall(client_data)

else: #否则移除

inputs.remove(r)

客户端:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import socket

ip_port = ("127.0.0.1",9999)

sk = socket.socket() #创建socket对象

sk.connect(ip_port) #通过ip和端口连接server端

while True:

inpu=input(">>:")

sk.sendall(bytes(inpu,"utf8")) #给server端发送信息

server_reply = sk.recv(1024) #接受消息

print (str(server_reply,"utf8")) #打印消息

sk.close() #关闭连接

过程:

启动服务端,这时select会一直监听服务端句柄,直到有客户端请求过来发生变化。

当客户端有新的连接请求过来时,select捕捉到服务端句柄发生变化,把变化的句柄加入到rlist,所以这时r == sk,接收这个链接并把句柄加入到inputs列表,

现在,select监听的就是两个句柄了。同理,当有多个链接请求过来时,都会把它添加到inputs列表中。

当其中的一个客户端A发送信息过来时,select会在监听的句柄列表中捕捉到客户端A这个句柄发生了变化,并把发生变化的句柄加入到rlist,但这时r不等于sk,

执行另一步操作,接收返回数据。

上面讲到了argv1参数的概述,是监听argv1这个列表,当有发生变化时才会捕捉,并加入到rlist。

argv2参数:只要在这个列表里有值,每次都会加入到wList,不同于argv1

所以可以利用argv2参数实现读写分离

server端

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import socket

import select

import queue

ip_port = ("127.0.0.1",9999)

sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建socket对象

sk.bind(ip_port) #绑定ip、端口

sk.listen(5) #监听

sk.setblocking(False) #不阻塞

inputs = [sk,]

outputs = []

message={}

while True:

rlist,wlist,eList = select.select(inputs,outputs,[],0.5)

#print("inputs:",inputs) #查看inputs列表变化

#print("rlist:",rlist) #查看rlist列表变化

#print(message)

for r in rlist:

if r == sk: #如果r是服务端

conn,address = r.accept()#

inputs.append(conn) #把连接的句柄加入inputs列表监听

message[conn] = queue.Queue() #每个新的句柄对应一个队列

print (address)

else:

client_data = r.recv(1024)

if client_data: #如果有数据,返回数据

outputs.append(r)

message[r].put(client_data) #在指定队列中插入数据

else:

inputs.remove(r) #否则移除

del message[r] #删除队列

for w in wlist: #如果wlist列表有值

try:

data =message[w].get_nowait()#去指定队列取数据

w.sendall(data)

except queue.Empty:

pass

outputs.remove(w)#因为output列表只要有数据每次都会加入wlist列表,所以发送完数据都要移除

在argv3的监听列表中,如果在跟某个socket连接通信过程中出了错误,就会把错误的句柄加到eList ,所以在加个判断,当某个socket连接通信过程中出了错误,就把这个错误的连接对象在各个列表和字典中删除。

在循环里在加上一个判断

for e in eList:

inputs.remove(e)#删除inputs监听的错误句柄

if e in outputs:#如果outputs里有也删除

outputs.remove(e)

e.close()

del message[e] #删除队列

select的4个参数都介绍完后附上server端完整代码

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import socket

import select

import queue

ip_port = ("127.0.0.1",9999)

sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建socket对象

sk.bind(ip_port) #绑定ip、端口

sk.listen(5) #监听

sk.setblocking(False) #不阻塞

inputs = [sk,]

outputs = []

message={}

while True:

rlist,wlist,eList = select.select(inputs,outputs,inputs,0.5)

#print("inputs:",inputs) #查看inputs列表变化

#print("rlist:",rlist) #查看rlist列表变化

#print(message)

for r in rlist:

if r == sk: #如果r是服务端

conn,address = r.accept()#

inputs.append(conn) #把连接的句柄加入inputs列表监听

message[conn] = queue.Queue() #每个新的句柄对应一个队列

print (address)

else:

client_data = r.recv(1024)

if client_data: #如果有数据,返回数据

outputs.append(r)

message[r].put(client_data) #在指定队列中插入数据

else:

inputs.remove(r) #否则移除

del message[r] #删除队列

for w in wlist: #如果wlist列表有值

try:

data =message[w].get_nowait()#去指定队列取数据

w.sendall(data)

except queue.Empty:

pass

outputs.remove(w)#因为output列表只要有数据每次都会加入wlist列表,所以发送完数据都要移除

for e in eList:

inputs.remove(e)#删除inputs监听的错误句柄

if e in outputs:#如果outputs里有也删除

outputs.remove(e)

e.close()

del message[e] #删除队列

热门文章

暂无图片
编程学习 ·

蓝桥杯-九宫重排(python)

蓝桥杯-九宫重排(python) 目录蓝桥杯-九宫重排(python)题目描述思路和总结:题目描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空…
暂无图片
编程学习 ·

java二维数组练习题

1、随机生成一个3位以上的整数,获取反转后的值 public static void main(String[] args) {Scanner input new Scanner(System.in);//随机生成一个3位以上的整数,获取反转后的值Random rand new Random();int randNum 100 rand.nextInt(33333333),co…
暂无图片
编程学习 ·

java写的各种钟(收集)

1.clock_demo1.java,时间有点不准,望指正 public class clock_demo1 extends JFrame {private static final long serialVersionUID 6790815213225162093L;Timer timer;int x, y, old_X, old_Y, r, x0, y0, w, h, ang;int sdo, mdo, hdo, old_M, old_H;// TimeZone…
暂无图片
编程学习 ·

药物开发的社交图谱

Social Graphs for Drug Development 通过提供更好的清晰度和对异构数据集的访问,构建社交图谱(知识图谱)以改善临床试验的流程并降低成本。 The Valley of Death 阿斯利康的健康信息学总监Paul Agapow在Grakn Labs的第一次全球用户大会Grakn Cosmos上讲述了他的团…
暂无图片
编程学习 ·

java中static的作用_Java中static关键字的作用

static关键字主要有两种作用:第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关。第二,实现某个方法或属性与类而不是对象关联在一起具体而言,在Java语言中,static主要有4中使用情况&…
暂无图片
编程学习 ·

电子工程师的自我修养 - EMC测试基础

EMC测试的那些项目,你都知道么? EMC检测(电磁兼容性检测)的全称是Electro Magnetic Compatibility,其定义为“设备和系统在其电磁环境中能正常工作且不对环境中任何事物构成不能承受的电磁骚扰的能力” 该定义包含两个方面的意思,…
暂无图片
编程学习 ·

Pascal 语言

Pascal 语言  Pascal是一种计算机通用的高级程序设计语言。它由瑞士Niklaus Wirth教授于六十年代末设计并创立。   以法国数学家命名的Pascal语言现已成为使用最广泛的基于DOS的语言之一,其主要特点有:严格的结构化形式;丰富完备的数据类…
暂无图片
编程学习 ·

matlab linux mount,Linux mount命令详解:挂载Linux系统外的文件

《Linux挂载》一节讲到,所有的硬件设备必须挂载之后才能使用,只不过,有些硬件设备(比如硬盘分区)在每次系统启动时会自动挂载,而有些(比如 U 盘、光盘)则需要手动进行挂载。通过学习 Linux 文件系统,我们可以对挂载的含…
暂无图片
编程学习 ·

linux硬盘挂载命令,mount(linux挂载硬盘命令)

我觉得那个unix主机有点不正常,就去找管理员,他说我给你mount(像是这。在Windows下,不需要挂载任何分区,只要是Windows能识别的,它会自动显示。. 就不用手动挂载了),要挂载就要使用Mount命令,而…
暂无图片
编程学习 ·

HCRM医院客户管理系统

医院患者管理系统hcrm,以病人为中心、实现短信群发,定时提醒以及服务一体化等。帮助医院规范业务流程、提高患者挖掘能力和患者服务质量、有效管理患者资源,达到全面提升医院核心竞争力的目的。本软件操作简单、方便、快捷,清晰、…
暂无图片
编程学习 ·

CSDN如何复制别人的博客问题

1.F12查看网页源代码 2.找到main_father下的“article_content”,右击点击复制,点击Copy as HTML 4.新建博客,在markdown编辑器中粘贴以上html代码。
暂无图片
编程学习 ·

前端创建项目常用指令

node.js下载 Node.js 中文网 npm地址修改 npm config set registry http://registry.npm.taobao.org cnpm 安装 npm install -g cnpm --registryhttps://registry.npm.taobao.org vue脚手架最新版安装 npm install -g vue/cli 查看vue脚手架版本 vue --version vue创建项…
暂无图片
编程学习 ·

java 定时轮询_Java 定时器的使用示例

最近要用到定时任务,就是超过48小时的数据给关闭,前台就不显示了。还是头一次使用java的定时器,。。java定时器使用Timer类。有时间得看下源码了,看看具体咋弄的。Timer主要用于Java线程里指定时间或周期运行任务。Timer是线程安全…
暂无图片
编程学习 ·

策略 模式

概念 不同策略分开处理 避免出现大量 if...else或者switch...case 演示 js class User {constructor(type) {this.type type}buy() {if (this.type ordinary) {console.log(普通用户购买)} else if (this.type member) {console.log(会员用户购买)} else if (this.type …
暂无图片
编程学习 ·

完全二叉树应用之堆排序算法

完全二叉树应用之堆排序算法 原理 完全二叉树是严格按照从上到下,从左向右排列的二叉树 步骤: 1、根据给定的关键词创建一个堆 2、输出堆顶的元素(如果是最大值则为最大堆,最小值则为最小堆) 3、调整余下元素&…
暂无图片
编程学习 ·

再见了,AI!再见了,人工智能!

Google 人工智能开发者专家彭靖田老师说——超90%的程序员在初学Python 人工智能时,都会遇到下面3个问题:1.应用方向太多了!不知从何学起,也不知道学完做什么2.Python语法、机器学习/深度学习基础都能看懂,但一做项目就…
暂无图片
编程学习 ·

linux-lsmod、lspci命令释义

Linux lspci命令用于显示当前主机的所有PCI总线信息,以及所有已连接的PCI设备信息。 Linux lsmod命令用于显示已经加载到内核中的模块的状态信息。执行lsmod命令后会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时&a…
暂无图片
编程学习 ·

android dialog 源码,AlertDialog源码解析

前言最近在研究设计模式中的建造者模式,而AlertDialog源码正是采用这种模式进行设计的,故将整个AlertDialog源码都给分析了一遍。总体框架在MainActivity中实例化一个AlertDialog对象:public class MainActivity extends AppCompatActivity {…
暂无图片
编程学习 ·

Spring常用注解(快速查找)

📚 博客主页:⭐️这是一只小逸白的博客鸭~⭐️👉 欢迎 关注❤️点赞👍收藏⭐️评论📝😜 小逸白正在备战实习,经常更新面试题和LeetCode题解,欢迎志同道合的朋友互相交流~ &#x1f4…
暂无图片
编程学习 ·

java 面向对象设计原则

面向对象设计原则1. 单一职责原则2. 开闭原则3. 里氏替换原则4. 依赖倒置原则5. 接口隔离原则6. 迪米特法则7. 合成复用原则1. 单一职责原则 好处:将功能分类,模块划分明确,修改一个模块不会造成其他模块的修改,降低模块之间的耦合度 2. 开闭原则 软件实体应该对…
暂无图片
编程学习 ·

android之SurfaceView和SurfaceHolder用法

SurfaceView是视图(View)的继承类, SurfaceView控制这个Surface的绘制位置。 surface是纵深排序(Z-ordered)的,这表明它总在自己所在窗口的后面。surfaceview提供了一个可见区域,surface的排版显示收到视图层级关系的…
暂无图片
编程学习 ·

https认证原理

https认证原理 为什么要有https,为了解决什么问题? 在http时代,所有数据都是明文传输,一开始大家都觉得没什么问题,后来发现互联网上存在一种叫黑客的人,他们会去截取和捕获这些信息. 尝试用非对称加密解决该问题 为了加密数据,我们引入密钥将数据加密不就好了吗?是吧 好…
暂无图片
编程学习 ·

Java数据结构——队列(链表)二

本节内容 双向链表,实现入队出队 特征 比单向链表多了一个before指针,指向其上级。 如此,可以从任意节点倒推。 以前遍历,只能从前往后,现在可以从后往前。 结构 public class LinkedQueue2 {private final Node …
暂无图片
编程学习 ·

Linux常用命令100个用法

Linux常用命令100个用法 1,echo “aa” > test.txt 和 echo “bb” >> test.txt //>将原文件清空,并且内容写入到文件中,>>将内容放到文件的尾部 2,chmod gow -R /home/zhangy //给组用户和其他用户添加写的权限…
暂无图片
编程学习 ·

循环比赛日程表(match)

循环比赛日程表&#xff08;match&#xff09; #include<bits/stdc.h> using namespace std; int m,n,a[1005][1005],h[1005][1005],l[1005][1005]; bool vis[1005][1005]; int main() {scanf("%d",&m);n(1<<m); for(int i1;i<n;i)//枚举行{for(i…
暂无图片
编程学习 ·

【好用的工具】CSDN插件真的好用

1. CSDN 谷歌浏览器插件 下载地址&#xff1a;https://plugin.csdn.net/ 1.1 安装方便 1.2 为什么选择 CSDN浏览器助手&#xff1f; 打造更酷的浏览器&#xff0c;解决工作各种难题解决你在浏览器上遇到的各种问题&#xff0c;无论你是学生小白、还是职场老鸟&#xff0c;都可…
暂无图片
编程学习 ·

括号匹配C语言实现

若你掌握以下知识&#xff0c;你可以更好地理解此篇文章&#xff1a; 1.C语言基本语法。 2.栈的核心思想与栈的构建。 分割线/ 相信看此篇文章的朋友很多是从书本过来的&#xff0c;书本那段描述真的晦涩难懂&#xff0c;什么紧迫性123456的&#xff0c;什么被需要&#xff0…
暂无图片
编程学习 ·

java lamda表达式视频教程_两天学会Lambda表达式视频教程下载

两天学会Lambda表达式视频教程下载课程介绍&#xff1a;Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。此套…
暂无图片
编程学习 ·

WIFI无线网络技术详细分析

WIFI无线网络在无线局域网的范畴是指“无线相容性认证”&#xff0c;实质上是一种商业认证&#xff0c;同时也是一种无线联网技术&#xff0c;以前通过网线连接电脑&#xff0c;而无线保真则是通过无线电波来连网;常见的就是一个无线路由器&#xff0c;那么在这个无线路由器的电…
暂无图片
编程学习 ·

beanshell断言_6.beanshell 断言的使用

当遇到复杂的业务场景时&#xff0c;简单的断言已不足以应对&#xff0c;此时需要Beanshell 断言组件示例&#xff1a;例如&#xff0c;判断接口响应结果字段responseCode为650,69,659,999,990开头时时&#xff0c;那么认为它就是异常的创建beanshell 断言组件String res_msg …
暂无图片
编程学习 ·

大学c语言作业会认真检查么,c语言学习上的思考与心得

由于这段时间在c语言的学习中&#xff0c;表现的很努力并且完成作业态度认真&#xff0c;所以得到了老师奖励的小黄衫。以下是我对于c语言的学习感受与心得。学习感受与心得我选择计算机的这个专业&#xff0c;是因为我对计算机的学习很有兴趣。c语言是我以前从来没有接触过、也…
暂无图片
编程学习 ·

新闻管理系统APP的实现与设计(基于Android Studio实现)

一、概要分析 通过简单对系统的概要分析与设计&#xff0c;大致得出了此系统的框架。首先由普通用户与系统管理员组成&#xff0c;普通用户可进行注册账号、账号登录、修改密码、浏览新闻、使用个人空间签到兑换图书等。其次是系统管理员&#xff0c;可以对普通用户账号密码进行…
暂无图片
编程学习 ·

第五课:名词

文章目录名词所有格作业名词所有格 名词所有格是表示所属关系的一种格式。 中文理解&#xff1a; 小明的书包 , “小明的” 就是所有格。因为书报是属于小明的。 英语的名词所有格有两种构成方式。 有生命的名词 ‘s 这里的 ‘s 就相当于中文 “的” 注意&#xff1a;这里的…

0粉丝抖音直播教程_抖音只有37个粉丝都能开直播

抖音怎么开通直播教程视频,怎么开直播视频1.打开抖音软件--进入我的2.点击右上角“...”3.选择反馈与帮助4.选择直播5.我是主播--如何开通直播6.点击更多--我要开播--按照要求填写要求申请即可希望可以帮助到你哦。抖音可以直播的,也可以个人开直播,但是有粉丝要求,而且官方…

0粉丝抖音开店教程_抖音粉丝不到一千可以开店吗

想在抖音上卖东西但是不知道卖什么好,也没有粉丝,要怎么起步,求详细的步骤,谢谢大家其实在抖音上卖货的话,不需要有一定的粉丝量也不需要有好的一点作品。只要有一定的经济基础,就可以到一点比较小型的一个主播去刷礼物,然后拉榜。然后可以叫主播给你带货。但是你必须得给…

0粉丝抖音小程序发布教程_抖音涨粉丝小程序

抖音里有的人喜欢是0,粉丝和点赞过万,怎么做到的?可能是他从来不点赞别人或者说她是明星,名人,所以粉丝很多也有买热门的抖音粉丝点赞多了不能直接赚钱,不过你可以通过变现来实现小程序的提交发布流程是怎样的?小程序首先需要认证,如果已有公众号认证,则可以直接复用资料…

0粉丝抖音小店开通教程_开通抖音小店需要1000粉丝吗

抖音小店有几种入驻方式?目前,国内的话抖音小店只支持个体工商户和企业两种方式入驻,在可选的经营类目上,两者是一致的,具体是以企业入驻还是个体工商户入驻,需要根据营业执照的类型来选择入驻类型,千万要注意,如果你的营业执照为个体工商户,则只能以“个人工商户”入…

0粉丝抖音小店开通教程_开通抖音小店粉丝不够怎么办

抖音小店有几种入驻方式?目前,国内的话抖音小店只支持个体工商户和企业两种方式入驻,在可选的经营类目上,两者是一致的,具体是以企业入驻还是个体工商户入驻,需要根据营业执照的类型来选择入驻类型,千万要注意,如果你的营业执照为个体工商户,则只能以“个人工商户”入…

0粉丝开通抖音橱窗教程_抖音不到1000粉丝怎么开通橱窗

解锁抖音电商橱窗权限要怎么操作?一、抖音橱窗当你的抖音账号同时满足:.粉丝量在1000以上;.发布10个以上视频;.完成实名认证后就能申请个人主页商品橱窗。审核通过,且在10天内完成新手任务,才能前往解锁“视频购物车”权限。开通抖音商品橱窗流程:进入任意抖音达人主页的【…

0粉丝开通抖音橱窗教程_0粉丝0作品开通抖音橱窗

抖音橱窗开店怎么开通?抖音在前段时间上线了商品橱窗功能,让大家能够在在自己上传的视频或抖音主页里分享商品,从而赚取更多的收益。下面抖音商品橱窗的开通方法,希望能够帮助到你。抖音商品橱窗的开通步骤:1、其实开通商品橱窗的方法并不复杂,用户们需要进入抖音的个人中…

0粉丝可以做抖音教程视频吗

淘宝直播如何将粉丝从0做起来?1、时间的选择A.从周一到周日你能够开启平常直播,和用户唱歌唱、唠唠嗑、聊化妆、聊调配,让粉丝知道你,让粉丝重视你。B.假如做不到天天8-10小时的狂播,那就固定每周某时段的固定直播,这种直播必定要有固定的大主题。这么你的淘宝直播才会有…

0基础英语抖音教材视频教程

0基础开始学英语好难好难,没音标基础,依靠金山词霸只好,有种绝望感觉,怎么办才好?我现在这样做笔记对吗英语不难,只要你认真学。没有音标,虽说很难学习,不过,你绝对不可以用拼音去模仿读音。我觉得最好还是先学习音标,不过如果你能坚持听英文歌,看美剧的话,一定提高很快…

0基础教程抖音_抖音零基础教程

想学习视频制作,零基础。主要是想做抖音一类的视频,从什么入门比较好,是先学习AE 还是Pr?对的,现在抖音、快手等短视频快速发展的当下,视频剪辑也受到了大家的关注,你如果是想用于短视频类的我建议你学习pr,因为pr就是用于剪辑调色这一类的,不过你要是想你的视频更加高…

0基础教程抖音_抖音直播零基础教程怎么弄

发抖音的步骤技巧一:调整发布时间有统计显示,有 62%的用户,会在饭前和睡前刷抖音,而在公司路上、上厕所等碎片化时间刷抖音的仅有 10.9%。最好的发布时间点没有统一的标准,所谓的工作日中午 12 点,下午 18 点以及晚上 21 点-22 点,或者周五的晚上以及周末等,统统只是大…

0基础抖音短视频文案教程_抖音短视频基础数据分析

怎样制作短视频宣传文案?第一步:明确主题第二步:搭建框架 第三步:填充细节都说细节决定成败,对于短视频也是如此。可以到创视网在线视频制作看看拥有海量视频模版可以快速制作简单上手。第一步:明确主题明确主题说的直白一点就是锁定目标群体,要搞清楚你写的东西是给谁看…

0基础学抖音入门教程_怎么拍抖音入门教程

抖音小视频怎么玩?1、首先自己拍摄一段自己的作品;2、然后点击编辑工具,选择节点,拖动就可以轻松编辑;3、编辑完成之后选择保存即可完成剪辑。扩展知识:抖音是一款音乐创意短视频社交软件,是一个专注年轻人的15秒音乐短视频社区。用户可以通过这款软件选择歌曲,拍摄15秒…

0基础做抖音教程_抖音玩法全部教程

学习抖音短视频制作需要什么基础吗?学习短视频可以0基础,手机拍摄+剪辑,很容易上手创作。杭州有家newface网红孵化基地有短视频创作班,学完进步很大,自己建立了账号,粉丝不断增长。学习抖音运营不需要什么苛刻的条件,唯一重要的就是选对培训的地方,网上和一些小培训机构…

00后抖音短视频教程

抖音怎么🈴️拍抖音视频合拍方法1、打开抖音,选择【我】页面;2、在【我】页面中,【作品】栏下找到你要合拍的短视频(这里小伙伴需要有自己想要同框的短视频,如果作品中没有的话,需要先上传作品哦,步骤:可以先在抖音中下载一段需要用到同框短视频,然后上传即可)3、在…

金包银抖音最火版教程

闽南语歌《金包银》音译成汉语或拼音金包银:译音歌词唱:蔡秋凤国语翻版[负心的你]唱:林翠萍吧郎啦a西mia,系空ging搁包赢,文a西mia嗯达及。吧郎啦那亏嘴,系ging言哟亿,文那系给拱喂,良咪丢出代记,怪文a落脱习,肚丢排北力,郎系河miagia。文弟呢最hia弟,汤哇a呀叫tei…

萝岗区抖音运营推广教程

抖音如何运营?首先,你要给自己的账号定位,明确自己的作品面向哪一类人群。比如你阳光帅气或者长相出众独具个性,那么这类人是属于最好运营抖音的,因为抖音的广告语设定就是:记录美好生活。所以这类作者的作品面向的人群是一二线城市24岁以下的年轻小伙伴。通过颜值的吸引…

抖音抽宝箱教程_抖音极速版宝箱打不开

抖音直播间怎样抽奖?抖音直播间的抽奖活动是抖音的我为了吸引粉丝做出的一种行为,你可以选择这个抽奖的按键,输入金额就可以抽奖了。导言直播间的抽奖方式就是,在进入讨厌房间就会看到一个红包,之要点开红包,然后就可以直接收起了。抖音直播间怎样抽奖?你可以去,百度搜…

抖音国际版登录全教程

抖音国际版在华为手机怎么下载登录啊,我试了很多种方法,还是不行?你说呢...你可以上抖音的官网上面进行下载,如果都从应用商店上面下载的话,是没有这个版本的。国外版抖音怎么登陆?想要登陆抖音国际版的朋友需要特别的抖音登陆器,你可以点击抖音海外版安卓APP,这是一个…

抖音上下四屏教程_抖音怎样合拍上下屏

抖音里唱歌上下加背景,加字幕的视频怎么制作1、推荐抖册APP。打开软件之后,直接点击下方的+号键展开所有功能,在这些功能里面选择“手动字幕”。2、添加好视频之后,直接点击下面的添加键,添加好文字后,点击确认。3、播放视频,左右滑动字幕条,编辑字幕时长。这样重复操作…